#! /usr/bin/env python

# Alunos:   Eliezer de Souza da Silva  RA: 124065
#           Fernanda Brandao Silva     RA: 060727
#           Michel Silva Fornaciali    RA: 071884
# IA368R: Eduardo Valle - Trabalho 2, Programa 1

import os
import sys
import Image
from random import randint

def validacao():
    # Faz a validacao da quantidade e extensoes dos arquivos de entrada.

    if len(sys.argv) != 3: 
        sys.stdout.write("Uso da amostragem: python amostragem.py <caminho> <N>\n")
        sys.stdout.write("     <caminho>: caminho completo para diretorio\n")
        sys.stdout.write("     <N>: numero de pixels a serem amostrados de cada imagem\n")
        sys.exit()


# --- Script principal ---

# Validacao dos dados de entrada.
validacao()

# Acessa o diretorio informado. 
arquivos = os.listdir(sys.argv[1])

# Para cada imagem PPM do diretorio, amostra N pixels.
for arquivo in arquivos:

    if arquivo[-3:] == "ppm":               
        # Abre a imagem e obtem as dimensoes.
        imagem = Image.open(sys.argv[1]+os.sep+arquivo)
        largura, altura = imagem.size

        # Obtem os pixels da imagem.
        pixels = []
        for x in range(altura):
            for y in range(largura):
                pixel = imagem.getpixel((x,y))
                pixels.append(pixel)
                
        # Amostra N pixels aleatorios distintos.
        amostrados = []
        n = int(sys.argv[2])      
        nPixels = altura*largura
        for i in range(n):
            k = randint(0,nPixels-1)
            while k in amostrados:
                k = randint(0,nPixels-1)            
            sys.stdout.write(str(pixels[k][0])+" "+str(pixels[k][1])+" "+str(pixels[k][2])+"\n")
            amostrados.append(k)
        


